/*
 * @Description: 数据类型
 * @Author: rendc
 * @Date: 2025-10-16 09:10:31
 * @LastEditors: rendc
 * @LastEditTime: 2025-10-16 11:49:07
 */
// String
var s1 = "string";
console.log('🤡 CC - s1:', s1);
var s2 = 'string';
console.log('🤡 CC - s2:', s2);
var s3 = "It's ";
console.log('🤡 CC - s3:', s3);
var s3 = '"你好"';
console.log('🤡 CC - s3:', s3);
var s4 = "换\n行";
console.log('🤡 CC - s4:', s4);
var s4 = "制\t表";
console.log('🤡 CC - s4:', s4);
var s4 = "退\b格";
console.log('🤡 CC - s4:', s4);
var s4 = "\'";
console.log('🤡 CC - s4:', s4);
var s4 = "\"";
console.log('🤡 CC - s4:' + s4);

// Number
// 
// 2进制 0 1 组成 0b开头
var num = 0b11;
console.log('🤡 CC - num:', num);
// 8进制 0开头 0-7组成
// 在TypeScript中，八进制字面量表示法0o70（即八进制的70）在严格模式下会触发编译错误。TypeScript编译器要求使用标准的十进制、十六进制或二进制字面量格式，不支持八进制字面量语法。
// var num = 070;
// console.log('🤡 CC - num:', num);
// 10进制 0-9
var num = 34;
// 16进制 0x开头 0-9 a-f
var num = 0xff;

// 精度
// 整数
var num = 10;
// 小数，最高精度是17位小数
var num = 10.012341234;

console.log('🤡 CC - Number.MAX_VALUE:', Number.MAX_VALUE);
console.log('🤡 CC - Number.MIN_VALUE:', Number.MIN_VALUE);

var num = 9 / 0;
console.log('🤡 CC - num:', num);

// 这个函数用来判断计算结果值在不在MIN_VALUE-MAX_VALUE范围中
var flag = isFinite(9 / 0);
console.log('🤡 CC - flag:', flag);
var flag = isNaN(NaN);
console.log('🤡 CC - flag:', flag); // true

var flag = isNaN(10 / "a");
console.log('🤡 CC - flag:', flag); // t

var num = 9 / "a";
console.log('🤡 CC - num:', num); // NaN
// not a number


var flag = "false";

if (flag) {
  console.log("开灯💡");
} else {
  console.log("关灯");
}

var a;
console.log('🤡 CC - a:', a);
a = 10;
console.log('🤡 CC - a:', a);
a = undefined;
console.log('🤡 CC - a:', a);

console.log('🤡 CC - undefined == null:', undefined == null); // true
console.log('🤡 CC - undefined === null:', undefined === null); // false

// var a = Symbol(1);
// var b = Symbol(1);
// 对象 属性 行为
var obj = {
  // 属性
  name: "zs",
  age: 4,
  // 行为 方法
  sayHello () {
    console.log("hello,I'm zs");
  }
}
console.log('🤡 CC - obj:', obj);
// .访问符可以访问对象的属性
console.log('🤡 CC - obj.name:', obj.name);
var age = "age";
console.log('🤡 CC - obj.age:', obj[age]);
console.log('🤡 CC - obj.age:', obj['age']);
// .访问符直接调用对象的方法，注意()
obj.sayHello();

// 数组
// 数组其实就是特殊的对象
var arr = ['zs', 4, 'sayHello', [], {}];
var obj = {
  0: 'zs',
  1: 4,
  2: 'sayHello',
  3: [],
  4: {}
}
console.log('🤡 CC - arr:', arr);
console.log('🤡 CC - obj.1:', obj[1]);
console.log('🤡 CC - arr[1]:', arr[1]);

function sum (a, b) {
  // console.log(a + b);
  return a + b;
}
sum(1, 2);
// console.log('🤡 CC - sum(1,2):', sum(1, 2));
